home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group00a.txt / 000073_icon-group-sender _Wed Apr 19 13:56:55 2000.msg < prev    next >
Internet Message Format  |  2001-01-03  |  3KB

  1. Return-Path: <icon-group-sender>
  2. Received: (from root@localhost)
  3.     by baskerville.CS.Arizona.EDU (8.9.1a/8.9.1) id NAA01199
  4.     for icon-group-addresses; Wed, 19 Apr 2000 13:56:30 -0700 (MST)
  5. Message-Id: <200004192056.NAA01199@baskerville.CS.Arizona.EDU>
  6. From: Steve Wampler <swampler@noao.edu>
  7. X-Newsgroups: comp.lang.icon
  8. Subject: Re: Reversible assignment really reversible ?
  9. Date: Wed, 19 Apr 2000 13:25:45 -0700
  10. X-Trace: noao.edu 956175946 66179 140.252.38.6 (19 Apr 2000 20:25:46 GMT)
  11. X-Complaints-To: abuse@noao.edu
  12. To: "F.G. van DORP" <F.G.van.Dorp@digimedia.nl>
  13. X-Accept-Language: en
  14. To: icon-group@optima.CS.Arizona.EDU
  15. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  16. Status: RO
  17.  
  18. "F.G. van DORP" wrote:
  19. > On 17 Apr 2000 16:33:32 -0400, "Frank J. Lhota"
  20. > <NOSPAM.Frank.Lhota@lexma.meitech.com> wrote:
  21. > >...
  22. > >
  23. > >If I understand your question correctly, you are wondering why reversible
  24. > >assignment fails after resumption. The reason for this is that it would have
  25. > >an undesired effect on control backtracking. Consider the scanning
  26. > >expression above, where text is "queen":
  27. > >
  28. > >                               (i <- 3) assigns 3 to i and suspends;
  29. > >                               (j <   find("q")) fails, so we resume the most recently
  30. > Surely you mean i <=
  31.  
  32. No, he means i <- 3,  "<-" is the reversible assignment operation.
  33. (The assignment operation ":=" is not reversible.  "<=" is a comparison
  34. operator and does no assignment.)
  35.  
  36. > However, with the present implementation the first rev.assignment that gets
  37. > resumed in a compound expression, will make the whole expression fail.
  38.  
  39. No, it will continue performing control backtracking until all subexpressions
  40. have no more results.
  41.  
  42. > Such a waste...
  43.  
  44. No, it's vital to a correct implementation of data backtracking.  Otherwise
  45. you cannot do compound reversible assignments, as in:
  46.  
  47.    row[r] <- down[r+c+1] <- up[8+r-c] <- r
  48.  
  49. or even the more simple:
  50.  
  51.    if f((k <- 1 to 3), (n <- "a"|"b"|"c")) then ....
  52.  
  53. (If the backtracking into reversible assignment were to succeed, you'd
  54. then do *forward* evaluation from that point instead of continuing back
  55. through the expression, which means you would not be assured of having
  56. tried all possible combinations of results from all subexpressions.)
  57.  
  58. > Besides, I'd imagine you'd avoid using regular assignments in compound
  59. > expressions in the first place: should the expression fail in the end, all
  60. > succesful regular assignments within this expression would still
  61. > be permanent, contrary to rev.assignments (your version or mine).
  62.  
  63. Depends on what you're trying to do, you may want some assignments to
  64. be permanent regardless of the outcome of the entire evaluation...
  65.  
  66.  
  67. --
  68. Steve Wampler-  SOLIS Project, National Solar Observatory
  69. swampler@noao.edu
  70.